/*
 *  DistributorAI.h
 *  RiskAI
 *
 *  Distributor AI wants to evenly distribute his troops across all
 *  his territories. The catch is that he's never happy, since the
 *  optimal number that he wants in each territory is less than he
 *  can achieve given his current troop totals. So he tries to conquer
 *  new territory so that he can spread his troops more thinly.
 *
 *  EXAMPLE: I have 3 territories, and 12 troops, so I have to put 4
 *		troops in each territory.  But, my goal is just 3 troops in each,
 *		so I need to conquer one more territory. Figure out this goal/logic
 *		at the beginning of the turn, and then ignore troop losses while
 *		conquering.
 *
 *	He operates on the following priorities:
 *
 *	  - Pick territories at random.
 *	  - Assign troops so that they are evenly distributed.
 *	  - Move/Fortify troops so that they will be as evenly distributed as possible.
 *	  - Attacking: at the beginning of the turn, figure out how many extra territories
 *			I want. This will be the amount that I need in order to have one less troop
 *			in each territory than my current average. Then just conquer that number.
 *    - Defend randomly.
 *
 */

#ifndef DISTRIBUTOR_AI_H_INCLUDED
#define DISTRIBUTOR_AI_H_INCLUDED

#include "Player.h"

class CDistributorAI : public CPlayer
{
public:
	
	CDistributorAI(int iIndex, CBoard* pxBoard);

	// virtual functions overridden in derived classes
	virtual int PickTerritory(std::vector<int> viAvailables);
	virtual int AssignTroops(int iNumTroops);
	virtual int MoveTroops(int iSourceIndex, int iDestinationIndex);
	virtual RiskAction DecideOnAction(std::vector<int> viViableAttackers);
	virtual int PickDefendingDie(int* aiAttackDice, int iTarget);
	virtual CFortification FortifyTroops(std::vector<int> viFortifiers);

};

#endif // DISTRIBUTOR_AI_H_INCLUDED